package xim

import (
	"time"

	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 创建申请关联
//
//	c	关联信息
func CreateJoins(c *ChatsJoin) error {
	if c.TypeId == 0 {
		return xerror.New("申请类型选择失败")
	}
	if c.UserId == 0 {
		return xerror.New("申请人不能为空")
	}
	if c.JoinId == 0 {
		return xerror.New("申请对象不能为空")
	}
	if _default.DB == nil {
		return xerror.New("数据库未连接")
	}
	// 检测是否存在
	{
		temp := ChatsJoin{}
		err := _default.DB.Table(_default.ChatsJoinTable).
			Where("user_id", c.UserId).
			Where("join_id", c.JoinId).
			Where("type_id", c.TypeId).
			Where("status", 1).
			Find(&temp).Error
		if err != nil {
			return xlog.AE("历史申请状态检测失败", err)
		}
		if temp.Id > 0 {
			c = &temp
			return nil
		}
	}
	if c.CreatedAt == "" {
		c.CreatedAt = time.Now().Format(time.DateTime)
	}
	if c.AutoAt == "" {
		c.AutoAt = "1970-01-01 08:00:00"
	}
	// 创建记录
	err := _default.DB.Table(_default.ChatsJoinTable).Save(c).Error
	if err != nil {
		return xlog.AE("邀请记录创建失败", err)
	}
	return nil
}
